package com.xing.algorithm.string;

/**
 * 数数并说
 */
public class CountAndSay {

//    public static String countAndSay(int n) {
//        if (n <= 0) {
//            return "";
//        }
//
//        if (n == 1) {
//            return "1";
//        }
//
//        String res = "1";
//        while ((--n) > 0) {
//            String cur = "";
//            for (int i = 0; i < res.length(); ++i) {
//                int cnt = 1;
//                while (i + 1 < res.length() && res.charAt(i) == res.charAt(i + 1)) {
//                    ++cnt;
//                    ++i;
//                }
//                cur += String.valueOf(cnt) + res.charAt(i);
//            }
//            res = cur;
//        }
//        return res;
//    }

    public static String countAndSay(int n) {
        if (n <= 1) {
            return n + "";
        }
        String str = "11";
        int ind = 2;
        while (ind < n) {
            StringBuffer sb = new StringBuffer();
            char[] arr = str.toCharArray();
            int count = 1;
            int type = Character.getNumericValue(arr[0]);
            for (int i = 1; i < arr.length; i++) {
                if (arr[i] == arr[i - 1]) {
                    count++;
                } else {
                    sb.append(count + "" + type);
                    type = Character.getNumericValue(arr[i]);
                    count = 1;
                }
            }
            ind++;
            sb.append(count + "" + type);
            str = sb.toString();
        }
        return str;
    }


    public static void main(String[] args) {
       System.out.println( countAndSay(6));

    }

}
